package controllers

import (
	"go-jhb-admin-api/app/models"
	"go-jhb-admin-api/app/utils"
	"go-jhb-admin-api/config"
	"time"

	"github.com/gin-gonic/gin"
)

func Login(c *gin.Context) {

	var loginData struct {
		Account  string `form:"account"`
		Password string `form:"password"`
		// Account  string `json:"account" binding:"required"`
	}

	// 解析请求数据
	if err := c.ShouldBind(&loginData); err != nil {
		utils.ErrorResponse(c, nil, err)
		return
	}

	if loginData.Account == "" || loginData.Password == "" {
		utils.ErrorResponse(c, nil, "请输入用户名与密码")
		return
	}

	// 查询数据库中是否有该账号
	var admin models.Admin
	if err := config.DB.Where("account = ?", loginData.Account).First(&admin).Error; err != nil {
		utils.ErrorResponse(c, nil, "账号或密码错误 -1")
		return
	}

	if utils.GeneratePassword(loginData.Password) != admin.Password {
		utils.ErrorResponse(c, nil, "账号或密码错误 -2")
		return
	}

	token := "###" + utils.UUID()

	// token加入缓存
	err := config.Set("adm_token_"+token, admin.ID, 360*24*time.Hour)
	if err != nil {
		utils.ErrorResponse(c, nil, "登陆失败,"+err.Error())
		return
	}

	utils.SuccessResponse(c, map[string]string{"token": token}, "登录成功")
}
